package com.wang.tool.monitor.writer;

import com.wang.tool.monitor.aop.MonitorAdvice;
import com.wang.tool.monitor.core.MonitorApi;
import com.wang.tool.monitor.core.MonitorInfo;

/**
 * 监控输出
 *
 * @Author wangshaopeng
 * @Date 2022/5/10
 * @see MonitorAdvice#monitorAround
 */
@FunctionalInterface
public interface MonitorWriter {

    /**
     * 监控输出
     * 全局掌控所有链路节点的摘要输出
     * 可以实现一些全局统一的逻辑
     * 例如
     * 根节点输出链路json/性能日志
     * 特定分组节点不输出日志
     *
     * @param monitorInfo 监控信息 非空
     * @see MonitorApi#stepInMonitor
     * @see MonitorApi#stepOutMonitor
     * @see SimpleMonitorWriter
     */
    void write(MonitorInfo<?> monitorInfo);
}
